#pragma once

#include "Filter.h"

#include <list>
#include <memory>

#include "types.h"

class CompositeFilter : public Filter {
public:

    CompositeFilter() = default;
    virtual ~CompositeFilter() = default;

    virtual AlgResultType operator () (const FilePairType& file_pair) const;

    void addFilter(const std::shared_ptr<Filter>& filter);

private:

    std::list<std::shared_ptr<Filter>> filters_;
};
